home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earcd / phase5 / ppcrelease / examples / msg7ppc.c < prev    next >
C/C++ Source or Header  |  1998-02-21  |  2KB  |  103 lines

  1. #include <exec/types.h>
  2. #include <exec/nodes.h>
  3. #include <exec/lists.h>
  4. #include <exec/memory.h>
  5. #include <utility/tagitem.h>
  6. #include <powerup/ppclib/interface.h>
  7. #include <powerup/ppclib/message.h>
  8. #include <powerup/ppclib/tasks.h>
  9. #include <powerup/gcclib/powerup_protos.h>
  10.  
  11. #define TEXT    "Text sent by PPC processor\n"
  12.  
  13. BPTR    MyFile;
  14. void printf(char *String);
  15.  
  16. #define    DEBUG    1
  17. #define    BODYSIZE    3747
  18.  
  19. int    main(void)
  20. {
  21. struct TagItem    MyTags[10];
  22. void        *PPCPort;
  23. void        *ReplyPort;
  24. void        *M68kPort;
  25. void        *PPCMsg;
  26. void        *M68kMsg;
  27. UBYTE        *Body;
  28. ULONG           result;
  29. ULONG        MsgCount;
  30. ULONG        i,j;
  31.  
  32.   MsgCount    =    PPCGetTaskAttr(PPCTASKTAG_STARTUP_MSGID);
  33.  
  34. #if DEBUG
  35.   if (MyFile = PPCOpen("con:0/0/640/200/MessageDemo - PPC output/CLOSE", MODE_NEWFILE))
  36.   {
  37.     printf("Creating message port\n");
  38. #endif
  39.     MyTags[0].ti_Tag  = PPCPORTTAG_NAME;
  40.     MyTags[0].ti_Data = (ULONG) "PPC port";
  41.     MyTags[1].ti_Tag  = TAG_DONE;
  42.     if (PPCPort = PPCCreatePort(MyTags))
  43.     {
  44.  
  45. #if DEBUG
  46.       printf("Waiting for M68k message\n");
  47. #endif
  48.       for (i=0;i<MsgCount;i++)
  49.       {
  50.         PPCWaitPort(PPCPort);
  51.  
  52. #if DEBUG
  53.         printf("Getting message\n");
  54. #endif
  55.         while (M68kMsg = PPCGetMessage(PPCPort))
  56.         {
  57.           Body    =    PPCGetMessageAttr(M68kMsg, PPCMSGTAG_DATA);
  58.  
  59.           for (j=0;j<BODYSIZE;j++)
  60.           {
  61.             if (Body[j]    != ((i+j) & 0xff))
  62.             {
  63.               printf("MsgBody is wrong");
  64.               break;
  65.             }
  66.           }
  67.           PPCReplyMessage(M68kMsg);
  68.         }
  69.       }
  70.  
  71. #if DEBUG
  72.       printf("Deleting message port\n");
  73. #endif
  74.       while (PPCDeletePort(PPCPort) == FALSE)
  75.       {
  76. /*
  77.         PPCRawDoFmt("deleteport failed...\n",
  78.                     NULL,
  79.                     1,                // 0=Buffer,1=serial <> NOT supported yet
  80.                     NULL);
  81. */
  82.       }
  83.     }
  84.     else
  85.     {
  86. #if DEBUG
  87.       printf("Could not create ppc port\n");
  88. #endif
  89.     }
  90.  
  91. #if DEBUG
  92.     printf("Closing output\n");
  93.     PPCClose(MyFile);
  94.   }
  95. #endif
  96. }
  97.  
  98. void printf(char *String)
  99. {
  100.   PPCWrite(MyFile, String, strlen(String));
  101. }
  102.  
  103.